package com.myCompany.edu.realtime.util;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @author
 * @date 2022/10/3 9:47
 */

public class RedisUtil {

    private static JedisPool pool;

    static {

        /**
         * JedisPoolConfig 是 GenericObjectPoolConfig 的子类
         */
        GenericObjectPoolConfig config = new JedisPoolConfig();

        config.setMaxTotal(100);    //最多提供多少个客户端
        config.setMaxIdle(2);       //最多的空闲客户端数量
        config.setMinIdle(1);       //最小的空闲客户端数量
        config.setMaxWaitMillis(10 * 1000);     //超过最大的客户端数量后的其余客户端的等待时间，当客户端等待超过该时间将被丢弃
        config.setTestOnCreate(true);   //如果没有空闲的客户端会临时创建一个，并对创建的客户端进行测试
        config.setTestOnBorrow(true);   //借一个客户端进行测试并使用
        config.setTestOnReturn(true);   //归还借来的客户端

        /**
         * 创建一个jedis连接池
         * public JedisPool(final GenericObjectPoolConfig poolConfig, final String host, final int port) {}
         */
        pool = new JedisPool(config, "hadoop102", 6379);
    }

    /**
     * @return 返回一个连接池对象
     */
    public static Jedis getRedisClient() {
        return pool.getResource();
    }
}
